home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
ada
/
ada_lrm1.zip
/
CHAPE.DOC
< prev
next >
Wrap
Text File
|
1988-11-30
|
20KB
|
926 lines
E. Syntax Summary
2.1
graphic_character ::= basic_graphic_character
| lower_case_letter | other_special_character
basic_graphic_character ::=
upper_case_letter | digit
| special_character | space_character
basic_character ::=
basic_graphic_character | format_effector
2.3
identifier ::=
letter {[underline] letter_or_digit}
letter_or_digit ::= letter | digit
letter ::= upper_case_letter | lower_case_letter
2.4
numeric_literal ::= decimal_literal | based_literal
2.4.1
decimal_literal ::= integer [.integer] [exponent]
integer ::= digit {[underline] digit}
exponent ::= E [+] integer | E - integer
2.4.2
based_literal ::=
base # based_integer [.based_integer] # [exponent]
base ::= integer
based_integer ::=
extended_digit {[underline] extended_digit}
extended_digit ::= digit | letter
E - 1
2.5
character_literal ::= 'graphic_character'
2.6
string_literal ::= "{graphic_character}"
2.8
pragma ::=
pragma identifier [(argument_association
{, argument_association})];
argument_association ::=
[argument_identifier =>] name
| [argument_identifier =>] expression
3.1
basic_declaration ::=
object_declaration | number_declaration
| type_declaration | subtype_declaration
| subprogram_declaration | package_declaration
| task_declaration | generic_declaration
| exception_declaration | generic_instantiation
| renaming_declaration | deferred_constant_declaration
3.2
object_declaration ::=
identifier_list : [constant] subtype_indication [:= expression];
| identifier_list : [constant] constrained_array_definition
[:= expression];
number_declaration ::=
identifier_list : constant := universal_static_expression;
identifier_list ::= identifier {, identifier}
3.3.1
type_declaration ::= full_type_declaration
| incomplete_type_declaration | private_type_declaration
full_type_declaration ::=
type identifier [discriminant_part] is type_definition;
type_definition ::=
enumeration_type_definition | integer_type_definition
| real_type_definition | array_type_definition
| record_type_definition | access_type_definition
| derived_type_definition
E - 2
3.3.2
subtype_declaration ::=
subtype identifier is subtype_indication;
subtype_indication ::= type_mark [constraint]
type_mark ::= type_name | subtype_name
constraint ::=
range_constraint | floating_point_constraint
| fixed_point_constraint | index_constraint
| discriminant_constraint
3.4
derived_type_definition ::= new subtype_indication
3.5
range_constraint ::= range range
range ::= range_attribute
| simple_expression .. simple_expression
3.5.1
enumeration_type_definition ::=
(enumeration_literal_specification
{, enumeration_literal_specification})
enumeration_literal_specification ::= enumeration_literal
enumeration_literal ::= identifier | character_literal
3.5.4
integer_type_definition ::= range_constraint
3.5.6
real_type_definition ::=
floating_point_constraint | fixed_point_constraint
3.5.7
floating_point_constraint ::=
floating_accuracy_definition [range_constraint]
floating_accuracy_definition ::=
digits static_simple_expression
3.5.9
E - 3
fixed_point_constraint ::=
fixed_accuracy_definition [range_constraint]
fixed_accuracy_definition ::=
delta static_simple_expression
3.6
array_type_definition ::=
unconstrained_array_definition | constrained_array_definition
unconstrained_array_definition ::=
array(index_subtype_definition {, index_subtype_definition}) of
component_subtype_indication
constrained_array_definition ::=
array index_constraint of component_subtype_indication
index_subtype_definition ::= type_mark range <>
index_constraint ::= (discrete_range {, discrete_range})
discrete_range ::= discrete_subtype_indication | range
3.7
record_type_definition ::=
record
component_list
end record
component_list ::=
component_declaration {component_declaration}
| {component_declaration} variant_part
| null;
component_declaration ::=
identifier_list : component_subtype_definition [:= expression];
component_subtype_definition ::= subtype_indication
3.7.1
discriminant_part ::=
(discriminant_specification {; discriminant_specification})
discriminant_specification ::=
identifier_list : type_mark [:= expression]
3.7.2
discriminant_constraint ::=
(discriminant_association {, discriminant_association})
E - 4
discriminant_association ::=
[discriminant_simple_name {| discriminant_simple_name} =>]
expression
3.7.3
variant_part ::=
case discriminant_simple_name is
variant
{variant}
end case;
variant ::=
when choice {| choice} =>
component_list
choice ::= simple_expression
| discrete_range | others | component_simple_name
3.8
access_type_definition ::= access subtype_indication
3.8.1
incomplete_type_declaration ::=
type identifier [discriminant_part];
3.9
declarative_part ::=
{basic_declarative_item} {later_declarative_item}
basic_declarative_item ::= basic_declaration
| representation_clause | use_clause
later_declarative_item ::= body
| subprogram_declaration | package_declaration
| task_declaration | generic_declaration
| use_clause | generic_instantiation
body ::= proper_body | body_stub
proper_body ::=
subprogram_body | package_body | task_body
4.1
name ::= simple_name
| character_literal | operator_symbol
| indexed_component | slice
| selected_component | attribute
simple_name ::= identifier
E - 5
prefix ::= name | function_call
4.1.1
indexed_component ::= prefix(expression {, expression})
4.1.2
slice ::= prefix(discrete_range)
4.1.3
selected_component ::= prefix.selector
selector ::= simple_name
| character_literal | operator_symbol | all
4.1.4
attribute ::= prefix'attribute_designator
attribute_designator ::=
simple_name [(universal_static_expression)]
4.3
aggregate ::=
(component_association {, component_association})
component_association ::=
[choice {| choice} => ] expression
4.4
expression ::=
relation {and relation} | relation {and then relation}
| relation {or relation} | relation {or else relation}
| relation {xor relation}
relation ::=
simple_expression [relational_operator simple_expression]
| simple_expression [not] in range
| simple_expression [not] in type_mark
simple_expression ::=
[unary_adding_operator] term {binary_adding_operator term}
term ::= factor {multiplying_operator factor}
factor ::= primary [** primary] | abs primary | not primary